<!DOCTYPE html>
<html lang="en-us">
  <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="robots" content="noodp"/>
  <meta name="author" content="Mr.wei">
  
  
  
  <link rel="prev" href="http://blog.mr-wei.cn/2019/cadence-orcad-capture-cis-%E5%AF%BC%E5%87%BApdf/" />
  <link rel="next" href="http://blog.mr-wei.cn/2019/shell-case%E7%BB%93%E6%9E%84/" />
  <link rel="canonical" href="http://blog.mr-wei.cn/2019/shell-%E5%8F%98%E9%87%8F/" />
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
  <link rel="manifest" href="/site.webmanifest">
  <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
  <meta name="msapplication-TileColor" content="#da532c">
  <meta name="theme-color" content="#ffffff">
  <title>
       
       
           shell 变量 | Mr.wei
       
  </title>
  <meta name="title" content="shell 变量 | Mr.wei">
    
  
  <link rel="stylesheet" href="/font/iconfont.css">
  <link rel="stylesheet" href="/css/main.min.css">


  
  
 

<script type="application/ld+json">
 "@context" : "http://schema.org",
    "@type" : "BlogPosting",
    "mainEntityOfPage": {
         "@type": "WebPage",
         "@id": "http:\/\/blog.mr-wei.cn"
    },
    "articleSection" : "posts",
    "name" : "shell 变量",
    "headline" : "shell 变量",
    "description" : " 位置变量 位置变量是依据出现在命令行上的参数的位置来确定的变量。在调用shell程序的命令行中参数的位置定义如下所示\n$cmd parm1 parm2 parm3 ...  当shell解释一个命令时，会将位置变量与命令行中的每一个参数关联依次是：\n$0 对应当前执行的命令名 $! 对应第一个位置参数 $2 对应第二个位置参数 ... $9 对应第九个位置参数 ${10} 对应第十个参数  可以使用shift命令移动位置参数每执行一个shift命令$0不变，从$1开始位置参数左移一位。\n特殊变量 $#\t参数个数 $*\t命令行中的所有参数组成的字符串 $!\t上一个后台命令对应的进程号 $? 最近一条命令执行后的退出状态 $$ 当前进程PID  创建变量 使用declare 和typeset可用于创建变量，通过命令的选项设置还可以设定变量的创建方式。通过将值直接赋予一个变量名也可以创建一个变量。为变量赋值时，变量名前不应加美元符号$，等号前后不可有空格，格式如下\n变量名=变量值  删除变量 删除变量的方法是使用unset命令，如果变量未被设置成只读属性则用户自定义滨安路和环境变量都可以通过使用unset命令删除\nread 命令 read命令可以从标准输入设备或一个文件读取数据。read命令读取一个输入行直到遇到一个换行符为止。当读取时，行末尾的换行符将被转换成一个空字节。read命令的语法格式如下：\nread param1 param2 ...  shell脚本在执行到read命令时，将暂停脚本的执行并等待键盘的输入。当用户输入数据并按回车键后，将完成赋值值操作，脚本会继续执行。 - 多个数据或变量之间用空格分隔 - 若变量个数与数据个数相等，则对应赋值 - 若变量个数大于输入数据个数，则没有输入数据的变量取空值 - 若变量个数小于输入数据个数，则多余的数据赋值给最后一个变量\n参考资料  Linux命令行与shell脚本编程大全  ",
    "inLanguage" : "en-us",
    "author" : "Mr.wei",
    "creator" : "Mr.wei",
    "publisher": "Mr.wei",
    "accountablePerson" : "Mr.wei",
    "copyrightHolder" : "Mr.wei",
    "copyrightYear" : "2019",
    "datePublished": "2019-09-03 10:42:46 \x2b0800 CST",
    "dateModified" : "2019-09-03 10:42:46 \x2b0800 CST",
    "url" : "http:\/\/blog.mr-wei.cn\/2019\/shell-%E5%8F%98%E9%87%8F\/",
    "wordCount" : "55",
    "keywords" : [ "shell", "Mr.wei"]
}
</script>

</head>

  


  <body class="">
    <div class="wrapper">
        <nav class="navbar">
    <div class="container">
        <div class="navbar-header header-logo">
        	<a href="javascript:void(0);" class="theme-switch"><i class="iconfont icon-xihuan"></i></a>&nbsp;<a href="http://blog.mr-wei.cn">Mr.wei</a>
        </div>
        <div class="menu navbar-right">
                
                
                <a class="menu-item" href="/posts/" title="">Blog</a>
                
                <a class="menu-item" href="http://balance.mr-wei.cn" title="">BalanceCar</a>
                
                <a class="menu-item" href="/categories/" title="">Categories</a>
                
                <a class="menu-item" href="/tags/" title="">Tags</a>
                
                <a class="menu-item" href="/about/" title="About">About</a>
                
        </div>
    </div>
</nav>
<nav class="navbar-mobile" id="nav-mobile" style="display: none">
     <div class="container">
        <div class="navbar-header">
            <div>  <a href="javascript:void(0);" class="theme-switch"><i class="iconfont icon-xihuan"></i></a>&nbsp;<a href="http://blog.mr-wei.cn">Mr.wei</a></div>
            <div class="menu-toggle">
                <span></span><span></span><span></span>
            </div>
        </div>
     
          <div class="menu" id="mobile-menu">
                
                
                <a class="menu-item" href="/posts/" title="">Blog</a>
                
                <a class="menu-item" href="http://balance.mr-wei.cn" title="">BalanceCar</a>
                
                <a class="menu-item" href="/categories/" title="">Categories</a>
                
                <a class="menu-item" href="/tags/" title="">Tags</a>
                
                <a class="menu-item" href="/about/" title="About">About</a>
                
        </div>
    </div>
</nav>







    	 <main class="main">
          <div class="container">
      		
<article class="post-warp" itemscope itemtype="http://schema.org/Article">
    <header class="post-header">
        <h1 class="post-title" itemprop="name headline">shell 变量</h1>
        <div class="post-meta">
                Written by <a itemprop="name" href="http://blog.mr-wei.cn" rel="author">Mr.wei</a> with ♥ 
                <span class="post-time">
                on <time datetime=2019-09-03 itemprop="datePublished">September 3, 2019</time>
                </span>
                in
                <i class="iconfont icon-folder"></i>
                <span class="post-category">
                        
                </span>
        </div>
    </header>
    <div class="post-content">
        

        

        
        
     
          
          
          

          
          
          

          

<h2 id="位置变量">位置变量</h2>

<p>位置变量是依据出现在命令行上的参数的位置来确定的变量。在调用shell程序的命令行中参数的位置定义如下所示</p>

<pre><code class="language-shell">$cmd parm1 parm2 parm3 ...
</code></pre>

<p>当shell解释一个命令时，会将位置变量与命令行中的每一个参数关联依次是：</p>

<pre><code class="language-shell">$0 对应当前执行的命令名
$! 对应第一个位置参数
$2 对应第二个位置参数
...
$9 对应第九个位置参数
${10} 对应第十个参数
</code></pre>

<p>可以使用shift命令移动位置参数每执行一个shift命令$0不变，从$1开始位置参数左移一位。</p>

<!-- more -->

<h2 id="特殊变量">特殊变量</h2>

<pre><code class="language-shell">$#	参数个数
$*	命令行中的所有参数组成的字符串
$!	上一个后台命令对应的进程号
$?  最近一条命令执行后的退出状态
$$  当前进程PID
</code></pre>

<h2 id="创建变量">创建变量</h2>

<p>使用declare 和typeset可用于创建变量，通过命令的选项设置还可以设定变量的创建方式。通过将值直接赋予一个变量名也可以创建一个变量。为变量赋值时，变量名前不应加美元符号$，等号前后不可有空格，格式如下</p>

<pre><code class="language-shell">变量名=变量值
</code></pre>

<h2 id="删除变量">删除变量</h2>

<p>删除变量的方法是使用unset命令，如果变量未被设置成只读属性则用户自定义滨安路和环境变量都可以通过使用unset命令删除</p>

<h2 id="read-命令">read 命令</h2>

<p>read命令可以从标准输入设备或一个文件读取数据。read命令读取一个输入行直到遇到一个换行符为止。当读取时，行末尾的换行符将被转换成一个空字节。read命令的语法格式如下：</p>

<pre><code class="language-shell">read param1 param2 ...
</code></pre>

<p>shell脚本在执行到read命令时，将暂停脚本的执行并等待键盘的输入。当用户输入数据并按回车键后，将完成赋值值操作，脚本会继续执行。
- 多个数据或变量之间用空格分隔
- 若变量个数与数据个数相等，则对应赋值
- 若变量个数大于输入数据个数，则没有输入数据的变量取空值
- 若变量个数小于输入数据个数，则多余的数据赋值给最后一个变量</p>

<h1 id="参考资料">参考资料</h1>

<ul>
<li><font size=6>Linux命令行与shell脚本编程大全</font></li>
</ul>

    </div>

    <div class="post-copyright">
             
            <p class="copyright-item">
                <span>Author:</span>
                <span>Mr.wei </span>
                </p>
            
           
             
            <p class="copyright-item">
                    <span>Link:</span>
                    <a href=http://blog.mr-wei.cn/2019/shell-%E5%8F%98%E9%87%8F/>http://blog.mr-wei.cn/2019/shell-%E5%8F%98%E9%87%8F/</span>
            </p>
            
             
            <p class="copyright-item lincese">
                本文采用<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/" #target="_blank">知识共享署名-非商业性使用 4.0 国际许可协议</a>进行许可
            </p>
            
    </div>

  
    <div class="post-tags">
        
            <section>
            <i class="iconfont icon-tag"></i>Tag(s): 
            
            <span class="tag"><a href="http://blog.mr-wei.cn/tags/shell/">
                    #shell</a></span>
            
            </section>
        
        <section>
                <a href="javascript:window.history.back();">back</a></span> · 
                <span><a href="http://blog.mr-wei.cn">home</a></span>
        </section>
    </div>

    <div class="post-nav">
        
        <a href="http://blog.mr-wei.cn/2019/cadence-orcad-capture-cis-%E5%AF%BC%E5%87%BApdf/" class="prev" rel="prev" title="Cadence OrCAD Capture CIS 导出PDF"><i class="iconfont icon-left"></i>&nbsp;Cadence OrCAD Capture CIS 导出PDF</a>
         
        
        <a href="http://blog.mr-wei.cn/2019/shell-case%E7%BB%93%E6%9E%84/" class="next" rel="next" title="shell case结构">shell case结构&nbsp;<i class="iconfont icon-right"></i></a>
        
    </div>

    <div class="post-comment">
          
                 
          
    </div>
</article>
          </div>
		   </main>
      <footer class="footer">
    <div class="copyright">
        &copy;
        
        <span itemprop="copyrightYear">2018 - 2019</span>
        
        <span class="with-love">
    	 <i class="iconfont icon-love"></i> 
         </span>
         
            <span class="author" itemprop="copyrightHolder"><a href="http://blog.mr-wei.cn">Mr.wei</a> | </span> 
         

         
            <a href="http://www.miibeian.gov.cn/" target="_blank" rel="external nofollow">冀ICP备 - 18032379号 </a> |
         
		  <span>Powered by <a href="https://gohugo.io/" target="_blank" rel="external nofollow">Hugo</a> & <a href="https://github.com/liuzc/leaveit" target="_blank" rel="external nofollow">LeaveIt</a></span> 
    </div>

	
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [['$','$'], ['\\(','\\)']],
            displayMath: [['$$','$$'], ['\[','\]']],
            processEscapes: true,
            processEnvironments: true,
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
            TeX: {
                equationNumbers: { autoNumber: "AMS" },
                extensions: ["AMSmath.js", "AMSsymbols.js"]
            }
        }
    });
</script>
<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
	
	

</footer>












    
    
    <script src="/js/vendor_no_gallery.min.js" async=""></script>
    
  



     </div>
  </body>
</html>
